//https://codeforces.com/problemset/problem/1739/C
//题意：一共n张牌，n为偶数，a,b分别拿n/2张，每次一个人先出剩下一个必须出一张比前者大的牌，出不了则输，
//能则换一个人先出，继续游戏，第一次a先出，最后均出完则平局，
//要求输出a必胜，b必胜，平局分别有多少种发牌情况
//思路：考虑最大的两张牌的分配情况
//1，a全拿，a必胜。
//2，a拿最大，b拿次大，a必胜。
//3，a拿次大，b拿最大，此时为了防止b下一轮打出最大，a必须先打出次大，让b用掉最大，此时a必胜转化为n-2张时b必胜数；
//4，b全拿，b必胜。（b必胜可以直接用总数减去平局和a必胜）

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll MOD=998244353;

//组合数不对，取模时出现错误
// ll cb(ll m,ll n){
//     ll ans=1;
//     for(int i=m+1;i<=n;i++){
//         ans=(ans*i)%MOD;
//     }
//     for(int i=2;i<=m;i++){
//         ans=(ans/i);
//     }
// }
ll c[100][100]={0};
void init(){
    for(int i=0;i<=65;i++){
        for(int j=0;j<=i;j++){
            if(j==0||j==i)c[i][j]=1;
            else c[i][j]=(c[i-1][j]+c[i-1][j-1])%MOD;
        }
    }
}
int main(){
    ll dp[100][3]={0};
    init();
    for(int i=1;i<=65;i++){
        dp[i][2]=1;
    }
    dp[2][0]=1;
    for(int i=4;i<=65;i+=2){
        dp[i][0]=((c[i-2][i/2-2]+c[i-2][i/2-1])%MOD+dp[i-2][1])%MOD;
        dp[i][1]=(c[i][i/2]-dp[i][0]-1+MOD)%MOD;//减法取模时注意先加一个，防止出现负数
    }
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        scanf("%d",&n);
        printf("%lld %lld %lld\n",dp[n][0],dp[n][1],dp[n][2]);
    }
}